//
// NeL - bindings
// Copyright (C) 2010 Naush
//
//This program is free software: you can redistribute it and/or modify
//it under the terms of the GNU Affero General Public License as
//published by the Free Software Foundation, either version 3 of the
//License, or (at your option) any later version.
//
//This program is distributed in the hope that it will be useful,
//but WITHOUT ANY WARRANTY; without even the implied warranty of
//MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
//GNU Affero General Public License for more details.
//
//You should have received a copy of the GNU Affero General Public License
//along with this program.  If not, see <http://www.gnu.org/licenses/>.

%feature("autodoc", "1");
#pragma SWIG nowarn=SWIGWARN_PARSE_NESTED_CLASS

%typemap(jni)           jsint8 "jsint8"
%typemap(jtype)         jsint8 "byte"
%typemap(jstype)        jsint8 "byte"
%typemap(jni)           juint8 "juint8"
%typemap(jtype)         juint8 "byte"
%typemap(jstype)        juint8 "byte"

%include "std_deque.i"
//%include "std_list.i"
%include "std_map.i"
%include "std_pair.i"
//%include "std_set.i"
%include "std_string.i"
%include "std_vector.i"

// Deal with method name conflicts
%rename(toString_c) *::toString() const;
// java conflict
#ifdef SWIGJAVA
        %rename(wait_c) *::wait();
        %rename(finalize_c) *::finalize();
        %rename(clone_c) *::clone() const;
#endif

%rename(assign) *::operator=;
%rename(isEqual) *::operator==;
%rename(notEqual) *::operator!=;
%rename(access) *::operator();
%rename(gt) *::operator>;
%rename(gte) *::operator>=;
%rename(lt) *::operator<;
%rename(lte) *::operator<=;
%rename(mul) *::operator*;
%rename(mulSelf) *::operator*=;
%rename(sub) *::operator-;
%rename(subSelf) *::operator-=;
%rename(add) *::operator+;
%rename(addSelf) *::operator+=;
%rename(div) *::operator/;
%rename(divSelf) *::operator/=;

%include "../compat.h"

%template(Vector_String) std::vector<std::string>;
%template(Vector_CVector) std::vector<NLMISC::CVector>;
#ifndef SWIGPYTHON
%template(Vector_uint16) std::vector<uint16>;
#endif
%template(Vector_uint32) std::vector<uint32>;
%template(Less_CString) std::less<NLMISC::CSString>;
